Skip to content

修复 CraftTweaker 删除配方后被 OOI 后处理重写的问题#10

Draft
wu-xiao-ya wants to merge 1 commit into
Circulate233:mainfrom
wu-xiao-ya:codex/fix-crafttweaker-recipe-order
Draft

修复 CraftTweaker 删除配方后被 OOI 后处理重写的问题#10
wu-xiao-ya wants to merge 1 commit into
Circulate233:mainfrom
wu-xiao-ya:codex/fix-crafttweaker-recipe-order

Conversation

@wu-xiao-ya

Copy link
Copy Markdown

问题

在安装 CraftTweaker / ModTweaker 的整合包中,OOI 会在 FMLLoadCompleteEvent 阶段执行 MatchItemHandler.postODProcess()

这个时机可能晚于 CraftTweaker / ModTweaker 的配方删除动作,导致已经被脚本删除的机器配方输入又被 OOI 的矿辞统一逻辑重写。

实际表现是:首次进入游戏时部分配方仍然存在,但执行 /ct reload 后配方才会正确消失。

修改内容

  • 给 OOI 堆栈初始化加一次性保护,避免提前初始化后在 OOI 自身 postInit 中重复执行。
  • 新增 CraftTweaker mixin,在 CraftTweaker#onPostInit 开头触发 OOI 初始化。
  • 新增配置项:
    • clearDuplicateRecipes:控制是否执行重复工作台配方清理。
    • initializeBeforeCraftTweakerActions:控制是否在 CraftTweaker 应用动作前完成 OOI 堆栈统一。
    • processOreDictionaryAtLoadComplete:控制是否继续在 LoadComplete 阶段执行矿辞后处理。
  • 默认关闭 LoadComplete 阶段的矿辞后处理,避免它在 CraftTweaker / ModTweaker 删除配方后再次重写机器配方输入。

验证

  • 在 Cleanroom 1.12.2 整合包中测试:
    • 铂矿相关处理配方首次启动即可被 CraftTweaker / ModTweaker 正确删除。
    • 不再需要进入游戏后额外执行 /ct reload
  • 对修改涉及的类执行过本地 javac -proc:none 编译验证。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant